/*
 * Copyright (C) 2015 yixun All Rights Reserved.
 * 
 * AreaService.java
 */
package com.yixun.qfbao.api.service;
import com.yixun.qfbao.apidto.*;

/**
 * [文件名称]<br>
 * LoginService.java<br>
 * <br>
 * [文件描述]<br>
 *  service interface<br>
 * <br>
 * [修改记录]<br>
 * 2017-11-9 10:04:27<br>
 * 
 * @author xiaojin.li
 * @version 1.00
 */
public interface OrganizationService {
	
	/**
	 * 添加机构
	 *@author xiaojin.li
	 *@date 2017年11月22日下午3:34:49
	 *@param loginReqDto
	 *@return
	 */
	public AddDeptResDto create(AddDeptReqDto addDeptReqDto);
	/**
	 * 更新机构
	 *@author xiaojin.li
	 *@date 2017年11月22日下午5:25:21
	 *@param editDeptReqDto
	 *@return
	 */
	public EditDeptResDto update(EditDeptReqDto editDeptReqDto);
	/**
	 * 删除机构
	 *@author xiaojin.li
	 *@date 2017年11月22日下午5:25:21
	 *@param editDeptReqDto
	 *@return
	 */
	public DelDeptResDto delOrg(DelDeptReqDto delDeptReqDto);
	/**
	 * 根据Id获取机构信息
	 *@author JHSong
	 *@date 2017年12月4日18:00:03
	 *@param reqDto
	 *@return
	 */
	public GetDeptByIdResDto getDeptById(GetDeptByIdReqDto reqDto);
	/**
	 * 获取本部机构树
	 *@author xiaojin.li
	 *@date 2017年11月23日上午11:03:39
	 *@param deptTreeReqDto
	 *@return
	 */
	public GetDeptTreeResDto getDeptTree(GetDeptTreeReqDto deptTreeReqDto);

	/**
	 * 获取本部的两级机构树
	 * @method: getChangeDeptTree
	 * @param: [deptTreeReqDto]
	 * @return: com.yixun.qfbao.apidto.GetDeptTreeResDto
	 */
	public GetDeptTreeResDto getChangeDeptTree(GetDeptTreeReqDto deptTreeReqDto);

	/**
	 * 根据开发商获取合作中介
	 *@author xiaojin.li
	 *@date 2017年11月23日下午2:11:37
	 *@param getAgentOrgByDevOrgReqDto
	 *@return
	 */
	public GetAgentOrgByDevOrgResDto getAgentOrgByDevOrg(GetAgentOrgByDevOrgReqDto getAgentOrgByDevOrgReqDto);
	/**
	 * 根据楼盘获取中介
	 *@author xiaojin.li
	 *@date 2017年11月23日下午3:41:19
	 *@param getAgentOrgByPremisesReqDto
	 *@return
	 */
	public GetAgentOrgByPremisesResDto getAgentOrgByPremises(GetAgentOrgByPremisesReqDto getAgentOrgByPremisesReqDto);
	/**
	 * 分销公司(机构)新增 
	 *@author xiaojin.li
	 *@date 2017年11月23日下午4:36:00
	 *@param addAgentOrgReqDto
	 *@return
	 */
	public AddAgentOrgResDto addAgentOrg(AddAgentOrgReqDto addAgentOrgReqDto);
	/**
	 * 分销机构修改
	 *@author xiaojin.li
	 *@date 2017年11月24日上午11:38:01
	 *@param updateAgentOrgReqDto
	 *@return
	 */
	public UpdateAgentOrgResDto updateAgentOrg(UpdateAgentOrgReqDto updateAgentOrgReqDto);
	/**
	 * 分销机构树
	 *@author xiaojin.li
	 *@date 2017年11月24日下午2:43:08
	 *@param getAgentOrgTreeReqDto
	 *@return
	 */
	public GetAgentOrgTreeResDto getAgentOrgTree(GetAgentOrgTreeReqDto getAgentOrgTreeReqDto);
	/**
	 * 分销机构审核Page(getAgentOrgAuditPage)
	 *@author xiaojin.li
	 *@date 2017年11月24日下午3:52:18
	 *@param getAgentOrgAuditPage
	 *@return
	 */
	public GetAgentOrgAuditPageResDto getAgentOrgAuditPage(GetAgentOrgAuditPageReqDto getAgentOrgAuditPage);
	/**
	 * 分销机构审核
	 *@author xiaojin.li
	 *@date 2017年11月24日下午4:40:33
	 *@param agentOrgAuditReqDto
	 *@return
	 */
	public AgentOrgAuditResDto agentOrgAudit(AgentOrgAuditReqDto agentOrgAuditReqDto);
	/**
	 * 根据中介公司名字 查询出和楼盘合作的的中介公司
	 *@author xiaojin.li	
	 *@date 2017年11月27日上午10:42:24
	 *@param getAgentOrgByCompanyPageReqDto
	 *@return
	 */
	public GetAgentOrgByCompanyListResDto getAgentOrgByCompanyPage(GetAgentOrgByCompanyListReqDto getAgentOrgByCompanyPageReqDto);
	/**
	 * 获取中介公司数量 （楼盘合作中介数量）
	 *@author xiaojin.li
	 *@date 2017年11月27日上午11:39:07
	 *@param getAgentOrgCountByCompany
	 *@return
	 */
	public GetAgentOrgCountByCompanyResDto getAgentOrgCountByCompany(GetAgentOrgCountByCompanyReqDto getAgentOrgCountByCompanyReqDto);
	/**
	 * 机构批量导入
	 *@author xiaojin.li
	 *@date 2017年11月27日下午2:34:15
	 *@param importOrgReqDto
	 *@return
	 */
	public ImportOrgResDto importOrg(ImportOrgReqDto importOrgReqDto) throws Exception;
	/**
	 * 根据companyCode获取公司信息
	 *@author xiaojin.li
	 *@date 2017年11月27日下午4:43:57
	 *@param getAgentOrgCountByCompanyCodeReqDto
	 *@return
	 */
	public GetAgentOrgByCompanyCodeResDto getAgentOrgByCompanyCode(GetAgentOrgByCompanyCodeReqDto getAgentOrgCountByCompanyCodeReqDto);
	/**
	 * 通过companyCode绑定公司
	 *@author xiaojin.li
	 *@date 2017年11月27日下午5:16:42
	 *@param bindCompanyCodeReqDto
	 *@return
	 */
	public BindCompanyCodeResDto bindCompanyCode(BindCompanyCodeReqDto bindCompanyCodeReqDto);
	/**
	 * 根据用户id获取公司
	 *@author xiaojin.li
	 *@date 2017年11月27日下午5:58:55
	 *@param getCompanyByUserIdReqDto
	 *@return
	 */
	public GetCompanyByUserIdResDto getCompanyByUserId(GetCompanyByUserIdReqDto getCompanyByUserIdReqDto);
	/**
	 * 获取佣金设置中的合作机构，会过滤掉已设置佣金规则的机构
	 *@author xiaojin.li
	 *@date 2017年11月28日上午10:40:54
	 *@param reqDto
	 *@return
	 */
	public GetCompanyForCommissionRuleResDto getCompanyForCommissionRule(GetCompanyForCommissionRuleReqDto reqDto);
	/**
	 * 获取导入错误信息
	 *@author xiaojin.li
	 *@date 2017年12月4日下午5:15:23
	 *@param reqDto
	 *@return
	 */
	public GetImportErrorMsgResDto getImportErrorMsg(GetImportErrorMsgReqDto reqDto);
	
	/**
	 * 添加合作机构
	 * @param reqDto
	 * @return
	 */
	public AddAgentDeptResDto addAgentDept(AddAgentDeptReqDto reqDto);
	
	/**
	 * 编辑合作机构
	 * @param reqDto
	 * @return
	 */
	public EditAgentDeptResDto editAgentDept(EditAgentDeptReqDto reqDto);

	/**
	*@description 合并部门
	*@author sangtao
	*@date 2017/12/20
	*@param dto
	**/
	MergeDeptResDto mergeDept(MergeDeptReqDto dto);

	/**
	*@description 转移部门
	*@author sangtao
	*@date 2017/12/20
	*@param dto
	**/
	ChangeDeptResDto changeDept(ChangeDeptReqDto dto);

	/**
	 * 批量导入合作机构
	 * @param reqDto1
	 * @return
	 */
    ImportCooOrgResDto importCooOrg(ImportCooOrgReqDto reqDto1) throws Exception;

	GetOrgAssistantListResDto getOrgAssistantList(GetOrgAssistantListReqDto getOrgAssistantListReqDto);

	/**
	 * 获取部门树
	 * @param deptId
	 * @param merchantId
	 * @return
	 */
	GetParentDeptResDto getParentDeptBySubDept(GetParentDeptReqDto getParentDeptReqDto);

	ImportCooOrgResDto importPremises(ImportCooOrgReqDto reqDto1) throws Exception;

	ImportCooOrgResDto importPremiseHouseType(ImportCooOrgReqDto reqDto1) throws Exception;

	ImportCooOrgResDto importPremiseDynamic(ImportCooOrgReqDto reqDto1) throws Exception;

	ImportCooOrgResDto importPremiseImage(ImportCooOrgReqDto reqDto) throws Exception;

	ImportCooOrgResDto importPremiseCommission(ImportCooOrgReqDto reqDto) throws Exception;
}
